package com.example.blog.service;

import com.example.blog.dao.domain.Archives;
import com.example.blog.dao.pojo.Article;
import com.example.blog.vo.ArticleVo;
import com.example.blog.vo.Result;
import com.example.blog.vo.param.ArticleParam;
import com.example.blog.vo.param.PageParams;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Transactional
public interface ArticleService {

    /**
     * 分页查询 文章列表
     * @param pageParams
     * @return
     */
    List<ArticleVo> listArticlesPage(PageParams pageParams);

    /**
     * 查询最热文章
     * @param limit 参数为查询浏览量最多的文章的个数
     * @return
     */
    List<Article> findHotArticles(int limit);

    /**
     * 首页 最新文章
     * @param limit
     * @return
     */
    List<Article> findNewArticles(int limit);

    /**
     * 首页 文章归档
     * @return
     */
    List<Archives> listArchives();

    /**
     * 文章详情
     * @return
     */
    ArticleVo findArticleById(Long articleId);

    /**
     * 发布文章
     * @return
     */
    Result insert(ArticleParam articleParam);
}
